/**
 * 文本处理工具类
 * 提供各种文本处理功能，如截断、格式化等
 */

/**
 * 截断文本，支持中英文混合计算
 * @param {string} text - 要截断的文本
 * @param {number} maxLength - 最大长度（以中文字符为单位）
 * @param {string} suffix - 截断后的后缀，默认为'...'
 * @returns {string} 截断后的文本
 */
export function truncateText(text, maxLength = 10, suffix = '...') {
  if (!text || typeof text !== 'string') return '';
  
  // 计算字符长度（中文=1，英文=0.5）
  let currentLength = 0;
  let truncated = '';
  
  for (let i = 0; i < text.length; i++) {
    const char = text[i];
    // 判断是否为中文字符（包括中文标点符号）
    const charLength = /[\u4e00-\u9fa5\u3000-\u303f\uff00-\uffef]/.test(char) ? 1 : 0.5;
    
    // 如果加上当前字符会超过最大长度，则停止
    if (currentLength + charLength > maxLength) {
      return truncated + suffix;
    }
    
    truncated += char;
    currentLength += charLength;
  }
  
  return truncated;
}

/**
 * 计算文本的显示长度（中文=1，英文=0.5）
 * @param {string} text - 要计算的文本
 * @returns {number} 文本的显示长度
 */
export function getTextDisplayLength(text) {
  if (!text || typeof text !== 'string') return 0;
  
  let length = 0;
  for (let char of text) {
    // 判断是否为中文字符（包括中文标点符号）
    length += /[\u4e00-\u9fa5\u3000-\u303f\uff00-\uffef]/.test(char) ? 1 : 0.5;
  }
  
  return length;
}

/**
 * 截断标题专用函数
 * @param {string} title - 标题文本
 * @returns {string} 截断后的标题
 */
export function truncateTitle(title) {
  return truncateText(title, 10, '...');
} 